#include <iostream>
#include <algorithm>
#include <unordered_map>

using namespace std;

const int N = 2e4 + 10;

int n;
int a[N];	// 存储起点
int b[N];	// 存储终点

int pos; // 去重后的个数
int disc[N * 2];

unordered_map<int, int> id;

int f[N * 2]; // 差分数组

int main()
{
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i] >> b[i];
		disc[++pos] = a[i];	disc[++pos] = b[i];
	}

	// 离散化
	sort(disc + 1, disc + 1 + pos); // 排序
	pos = unique(disc + 1, disc + 1 + pos) - (disc + 1); // 去重

	for (int i = 1; i <= pos; i++)
	{
		id[disc[i]] = i;
	}

	// 做差分数组
	for (int i = 1; i <= n; i++)
	{
		int l = id[a[i]], r = id[b[i]];
		f[l]++; f[r]--;
	}

	// 还原数组
	for (int i = 1; i <= pos; i++)
		f[i] += f[i - 1];

	// 处理结果
	int ret = 0;
	for (int i = 1; i <= pos; i++)
	{
		int j = i;
		while (j <= pos && f[j] > 0)
			j++;
		// 累加原始长度
		ret += disc[j] - disc[i];
		i = j;
	}

	cout << ret << endl;

	return 0;
}